
#pragma once
#include <vulkan/vulkan_core.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include "ce_vulkan_struct.h"

class CE_VulkanContext;
class CE_VulkanShader;
class CE_VulkanPass;

class CE_VulkanPipeline
{
private:
    CE_VulkanObjectTypeE _objectType;
    CE_VulkanContext *_context;
    CE_VulkanShader *_shader;
    CE_VulkanPass *_pass;

    VkPipelineLayout _pipelineLayout;
    VkPipeline _pipeline;
    /**
     * @brief 管道
     */
    void _createPipeline();

public:
    CE_VulkanPipeline(CE_VulkanContext *context, CE_VulkanObjectTypeE type, CE_VulkanShader *shader, CE_VulkanPass *pass);
    VkPipeline getPipeline();
    VkPipelineLayout getPipelineLayout();
    CE_VulkanPass *getPass();
    ~CE_VulkanPipeline();
};
